/*
 *
 *  * Copyright (c) 2020-2023, Lykan (jiashuomeng@gmail.com).
 *  * <p>
 *  * Licensed under the Apache License, Version 2.0 (the "License");
 *  * you may not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  * <p>
 *  *     http://www.apache.org/licenses/LICENSE-2.0
 *  * <p>
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *
 */
package cn.kstry.flux.demo.converter;


import cn.kstry.flux.demo.dto.student.Student;
import cn.kstry.framework.core.component.conversion.TypeConverter;
import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Component;

import javax.annotation.Nullable;
import java.util.Map;

/**
 * @author lykan
 */
@Component
@SuppressWarnings("rawtypes")
public class Map2StudentConverter implements TypeConverter<Map, Student> {

    @Override
    public Student doConvert(Map source, @Nullable Class<?> needType) {
        return JSON.parseObject(JSON.toJSONString(source), getTargetType());
    }

    @Override
    public Class<Map> getSourceType() {
        return Map.class;
    }

    @Override
    public Class<Student> getTargetType() {
        return Student.class;
    }

    @Override
    public String getConvertName() {
        return "MAP-TO-STUDENT";
    }
}
